create database parse_xlog_db;
\c parse_xlog_db;
-- gs_xlogdump_lsn
START TRANSACTION;

CREATE OR REPLACE FUNCTION gs_xlogdump_lsn()
RETURNS table (output text)
LANGUAGE plpgsql
AS
$$
DECLARE
    param1  text;
    param2  text;
BEGIN
    SELECT pg_current_xlog_location() into param1;
    CHECKPOINT;
    SELECT pg_current_xlog_location() into param2;
    return query SELECT gs_xlogdump_lsn(''|| param1 || '', ''|| param2 || '');
END;
$$
;

SELECT gs_xlogdump_lsn();
COMMIT;

-- gs_xlogdump_xid
SELECT gs_xlogdump_xid('200');


-- gs_xlogdump_tablepath
START TRANSACTION;

CREATE OR REPLACE FUNCTION gs_xlogdump_tablepath()
RETURNS table (output text)
LANGUAGE plpgsql
AS
$$
DECLARE
    param1  text;
    param2  text;
BEGIN
    DROP TABLE IF EXISTS heap_t;
    CREATE TABLE heap_t (i INT);
    INSERT INTO heap_t SELECT * FROM generate_series(1,10);
    CHECKPOINT;
    SELECT pg_relation_filepath('heap_t') into param1;
    return query SELECT gs_xlogdump_tablepath(''|| param1 || '', 0, 'heap');
END;
$$
;

SELECT gs_xlogdump_tablepath();
DROP TABLE heap_t;
COMMIT;

-- gs_xlogdump_parsepage_tablepath
START TRANSACTION;

CREATE OR REPLACE FUNCTION gs_xlogdump_parsepage_tablepath()
RETURNS table (output text)
LANGUAGE plpgsql
AS
$$
DECLARE
    param1  text;
    param2  text;
BEGIN
    DROP TABLE IF EXISTS heap_t1;
    CREATE TABLE heap_t1 (i INT);
    INSERT INTO heap_t1 SELECT * FROM generate_series(1,10);
    CHECKPOINT;
    SELECT pg_relation_filepath('heap_t1') into param1;
    return query SELECT gs_xlogdump_parsepage_tablepath(''|| param1 || '', 0, 'heap', false);
END;
$$
;

SELECT gs_xlogdump_parsepage_tablepath();
DROP TABLE heap_t1;
COMMIT;

\c regression;
drop database parse_xlog_db;
